package com.glamour.hlcity.dal.dao;

import com.glamour.hlcity.common.condition.QueryCondition;
import com.glamour.hlcity.common.model.Entity;

import java.util.List;

/**
 * 通用的数据库增删改查操作接口
 * 
 * @author zhaoxing.liuzx
 * 
 */
public interface GenricDao<T extends Entity> {
	/**
	 * 新增记录
	 * 
	 * @param entity
	 * @return
	 */
	public T insert(T entity);

	/**
	 * 根据条件查询记录 <li>其中first和last是分页查询时需要用到的</li>
	 * 
	 * @param condition
	 * @return
	 */
	public List<T> selectByConditon(QueryCondition condition);

	/**
	 * 统计查询记录个数
	 * 
	 * @param condition
	 * @return
	 */
	public Integer countByCondition(QueryCondition condition);

	/**
	 * 修改记录
	 * 
	 * @param entity
	 * @return
	 */
	public Integer update(T entity);

	/**
	 * 修改记录
	 * 
	 * @param condition
	 * @return
	 */
	public Integer updateByCondition(QueryCondition condition);

	/**
	 * 通过主键获得记录
	 * 
	 * @param id
	 * @return
	 */
	public T getById(Long id);

	/**
	 * 删除，逻辑删除
	 * 
	 * @param id
	 * @return
	 */
	public Integer deleteById(Long id);
}
